// components/Tabbar/Tabbar.js
Component({
  /**
   * 组件的属性列表
   */
  properties: {
    // 当前激活的 tab 索引
    active: {
      type: Number,
      value: 0,
      observer: function(newVal, oldVal) {
        // 当 active 属性变化时，更新内部状态
        // 只有当新值与当前值不同时才更新，避免不必要的setData
        if (this.data.active !== newVal) {
          this.setData({
            active: newVal
          });
        }
      }
    }
  },

  /**
   * 组件的初始数据
   */
  data: {
    // 是否是华为手机
    isHuawei: false,
    // Tabbar 配置数据（内置）
    tabs: [
      {
        pagePath: '/pages/home/home',
        iconPath: '/static/icon/guangchang.png',
        selectedIconPath: '/static/icon/selectguangchang.png',
        text: '广场',
        index: 0
      },
      {
        pagePath: '/pages/advanced/advanced',
        iconPath: '/static/icon/jinjie.png',
        selectedIconPath: '/static/icon/selectjinjie.png',
        text: '进阶',
        index: 1
      },
      {
        pagePath: '/pages/publish/publish',
        iconPath: '/static/icon/logo.png',
        selectedIconPath: '/static/icon/selectLogo.png',
        text: '发布',
        index: 2
      },
      {
        pagePath: '/pages/cart/cart',
        iconPath: '/static/icon/shop.png',
        selectedIconPath: '/static/icon/selectShop.png',
        text: '商城',
        index: 3
      },
      {
        pagePath: '/pages/profilePage/profilePage',
        iconPath: '/static/icon/me.png',
        selectedIconPath: '/static/icon/selectMe.png',
        text: '我的',
        index: 4
      }
    ],
    // 开发中的页面列表
    developingPages: [
      '/pages/advanced/advanced',
      '/pages/publish/publish',
      '/pages/cart/cart'
    ]
  },

  /**
   * 组件的方法列表
   */
  methods: {
    /**
     * Tab点击事件（原生实现）
     */
    onTabClick(e) {
      const index = e.currentTarget.dataset.index;
      const tabs = this.data.tabs;
      const targetTab = tabs[index];
      
      if (!targetTab) {
        return;
      }

      // 检查是否是开发中的页面
      if (this.data.developingPages.includes(targetTab.pagePath)) {
        wx.showToast({
          title: '在加速开发中，敬请期待',
          icon: 'none',
          duration: 2000
        });
        return;
      }

      // 如果点击的是当前已选中的tab，不执行跳转
      if (this.properties.active === index) {
        return;
      }

      // 更新选中状态
      this.setData({
        active: index
      });

      // 执行页面跳转（内置跳转逻辑）
      // 使用 switchTab，因为页面已在 app.json 的 tabBar 配置中
      wx.switchTab({
        url: targetTab.pagePath,
        success: () => {
          // 跳转成功，触发事件通知父组件
          this.triggerEvent('change', { active: index, tab: targetTab });
        },
        fail: (err) => {
          console.error('页面跳转失败:', err);
          wx.showToast({
            title: '页面跳转失败',
            icon: 'none'
          });
        }
      });
    },

    /**
     * 获取当前页面对应的 tab 索引
     */
    getCurrentTabIndex() {
      const pages = getCurrentPages();
      const currentPage = pages[pages.length - 1];
      const currentRoute = '/' + currentPage.route;
      
      const tabs = this.data.tabs;
      const index = tabs.findIndex(tab => tab.pagePath === currentRoute);
      return index !== -1 ? index : 0;
    }
  },

  /**
   * 组件生命周期
   */
  lifetimes: {
    attached() {
      // 检测是否是华为手机（包括Mate60系列等）
      try {
        const systemInfo = wx.getSystemInfoSync();
        const brand = (systemInfo.brand || '').toLowerCase();
        const model = (systemInfo.model || '').toLowerCase();
        const manufacturer = (systemInfo.manufacturer || '').toLowerCase();
        
        // 检查多个字段，确保能识别所有华为机型
        // 1. 检查brand和manufacturer字段
        // 2. 检查model字段中的华为特征（Mate、P、Nova等系列通常只有华为使用）
        const isHuawei = 
          brand.includes('huawei') || 
          brand.includes('honor') ||
          manufacturer.includes('huawei') ||
          manufacturer.includes('honor') ||
          model.includes('huawei') ||
          model.includes('honor') ||
          // Mate系列（Mate60等）
          model.includes('mate') ||
          // P系列（P60等，但需要排除其他品牌的P系列，通常model会包含更多信息）
          (model.includes('p') && (model.match(/p\d+/i) || brand.includes('huawei') || manufacturer.includes('huawei'))) ||
          // Nova系列
          model.includes('nova');
        
        this.setData({
          isHuawei: isHuawei
        });
      } catch (e) {
        console.error('获取系统信息失败:', e);
      }
      
      // 如果是奇数个 tab，自动标记中间项为特殊 tab（向上凸起）
      const tabs = this.data.tabs;
      if (tabs.length % 2 === 1) {
        const middleIndex = Math.floor(tabs.length / 2);
        tabs[middleIndex].isSpecial = true;
        // 计算中间 tab 的位置（相对于 tabbar 的百分比）
        tabs[middleIndex].position = ((middleIndex + 0.5) / tabs.length) * 100;
      }
      
      // 如果没有传入 active 属性，自动检测当前页面
      const active = this.properties.active !== undefined ? this.properties.active : this.getCurrentTabIndex();
      
      this.setData({
        tabs: tabs,
        active: active
      });
    }
  },

  /**
   * 组件所在页面的生命周期
   */
  pageLifetimes: {
    show() {
      // 页面显示时，重新检测当前页面并更新active状态
      // 这样可以确保页面切换后，tabbar的选中状态正确
      const currentIndex = this.getCurrentTabIndex();
      if (this.data.active !== currentIndex) {
        this.setData({
          active: currentIndex
        });
      }
    }
  }
});

